package algorithme;

import reservation.Trajet;

/**
 * Classe Liaison : Représente une liaison entre deux noeuds sur un graphe
 * 
 * @author Alexandre Boursier and Mamadou Diallo and Cyril Gorrieri and Emmanuel
 *         Menage
 * @version 2012.01.23
 */
public class Liaison {
	/**
	 * Destination
	 */
	private Noeud destination;
	private Trajet trajet;
	private Option option;

	public Liaison(Noeud argTarget, Trajet t, Option op) {
		destination = argTarget;
		trajet = t;
		option = op;
	}

	@Override
	public String toString() {
		return destination.toString() + " " + getWeight();
	}

	/**
	 * Récupère le poids de la liaison en fonction de l'option
	 * 
	 * @return Le poids
	 */
	public double getWeight() {
		return (option == Option.PRIX ? trajet.calculerPrix() : trajet
				.getTemps());
	}

	/**
	 * Retourne le noeud de destination
	 * 
	 * @return
	 */
	public Noeud getDestination() {
		return destination;
	}

	/**
	 * Retourne le trajet associé à cette liaison
	 * 
	 * @return
	 */
	public Trajet getTrajet() {
		return trajet;
	}
}
